Skip to content

Conversation

@mhlidd
Copy link
Contributor

@mhlidd mhlidd commented Oct 23, 2025

What Does This Do

This PR adds another Gradle task to the ConfigInversionLinter plugin. The task goes through all Configuration definitions in dd-trace-api/src/main/java/datadog/trace/api/config and ensures that all defined configurations exist in the local metadata/supported-configurations.json file. Note that some files (specifically ProfilingConfig.java) also define default values in the package, and the Gradle task accounts for that by skipping all strings ending with _DEFAULT.

Additionally, the ConfigInversionLinter plugin was mistakenly not activated in prior PRs. This PR activates the plugin to enable all relevant tasks.

Motivation

Additional Notes

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@datadog-datadog-prod-us1
Copy link
Contributor

datadog-datadog-prod-us1 bot commented Oct 23, 2025

🎯 Code Coverage
Patch Coverage: 100.00%
Total Coverage: 59.59% (-0.02%)

View detailed report

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 586c53e | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented Oct 23, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/update_config_invaersion_gradle
git_commit_date 1762968291 1762970269
git_commit_sha 46649f7 586c53e
release_version 1.56.0-SNAPSHOT~46649f7687 1.55.0-SNAPSHOT~586c53ec38
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1762972084 1762972084
ci_job_id 1230747197 1230747197
ci_pipeline_id 82135885 82135885
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-tkxp6w1p 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-tkxp6w1p 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 58 metrics, 7 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.11 s) : 0, 1110305
Total [baseline] (10.747 s) : 0, 10746982
Agent [candidate] (1.117 s) : 0, 1116797
Total [candidate] (10.819 s) : 0, 10819297
section appsec
Agent [baseline] (1.28 s) : 0, 1280276
Total [baseline] (11.14 s) : 0, 11140328
Agent [candidate] (1.278 s) : 0, 1278293
Total [candidate] (11.17 s) : 0, 11170211
section iast
Agent [baseline] (1.242 s) : 0, 1241735
Total [baseline] (11.248 s) : 0, 11247644
Agent [candidate] (1.244 s) : 0, 1243615
Total [candidate] (11.299 s) : 0, 11298701
section profiling
Agent [baseline] (1.236 s) : 0, 1236333
Total [baseline] (11.106 s) : 0, 11106208
Agent [candidate] (1.236 s) : 0, 1235759
Total [candidate] (11.089 s) : 0, 11089258
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.11 s -
Agent appsec 1.28 s 169.971 ms (15.3%)
Agent iast 1.242 s 131.43 ms (11.8%)
Agent profiling 1.236 s 126.028 ms (11.4%)
Total tracing 10.747 s -
Total appsec 11.14 s 393.346 ms (3.7%)
Total iast 11.248 s 500.662 ms (4.7%)
Total profiling 11.106 s 359.226 ms (3.3%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.117 s -
Agent appsec 1.278 s 161.496 ms (14.5%)
Agent iast 1.244 s 126.818 ms (11.4%)
Agent profiling 1.236 s 118.962 ms (10.7%)
Total tracing 10.819 s -
Total appsec 11.17 s 350.914 ms (3.2%)
Total iast 11.299 s 479.404 ms (4.4%)
Total profiling 11.089 s 269.961 ms (2.5%)
gantt
    title petclinic - break down per module: candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.463 ms) : 0, 1463
crashtracking [candidate] (1.469 ms) : 0, 1469
BytebuddyAgent [baseline] (710.603 ms) : 0, 710603
BytebuddyAgent [candidate] (713.622 ms) : 0, 713622
GlobalTracer [baseline] (249.538 ms) : 0, 249538
GlobalTracer [candidate] (251.062 ms) : 0, 251062
AppSec [baseline] (32.439 ms) : 0, 32439
AppSec [candidate] (32.9 ms) : 0, 32900
Debugger [baseline] (69.02 ms) : 0, 69020
Debugger [candidate] (70.032 ms) : 0, 70032
Remote Config [baseline] (626.926 µs) : 0, 627
Remote Config [candidate] (658.778 µs) : 0, 659
Telemetry [baseline] (8.112 ms) : 0, 8112
Telemetry [candidate] (8.386 ms) : 0, 8386
Flare Poller [baseline] (3.648 ms) : 0, 3648
Flare Poller [candidate] (3.786 ms) : 0, 3786
section appsec
crashtracking [baseline] (1.442 ms) : 0, 1442
crashtracking [candidate] (1.473 ms) : 0, 1473
BytebuddyAgent [baseline] (729.422 ms) : 0, 729422
BytebuddyAgent [candidate] (728.985 ms) : 0, 728985
GlobalTracer [baseline] (240.772 ms) : 0, 240772
GlobalTracer [candidate] (240.661 ms) : 0, 240661
IAST [baseline] (24.67 ms) : 0, 24670
IAST [candidate] (24.864 ms) : 0, 24864
AppSec [baseline] (174.347 ms) : 0, 174347
AppSec [candidate] (173.675 ms) : 0, 173675
Debugger [baseline] (61.85 ms) : 0, 61850
Debugger [candidate] (60.978 ms) : 0, 60978
Remote Config [baseline] (677.398 µs) : 0, 677
Remote Config [candidate] (651.893 µs) : 0, 652
Telemetry [baseline] (8.475 ms) : 0, 8475
Telemetry [candidate] (8.416 ms) : 0, 8416
Flare Poller [baseline] (3.943 ms) : 0, 3943
Flare Poller [candidate] (3.891 ms) : 0, 3891
section iast
crashtracking [baseline] (1.458 ms) : 0, 1458
crashtracking [candidate] (1.452 ms) : 0, 1452
BytebuddyAgent [baseline] (828.669 ms) : 0, 828669
BytebuddyAgent [candidate] (830.261 ms) : 0, 830261
GlobalTracer [baseline] (238.086 ms) : 0, 238086
GlobalTracer [candidate] (238.547 ms) : 0, 238547
IAST [baseline] (29.998 ms) : 0, 29998
IAST [candidate] (30.903 ms) : 0, 30903
AppSec [baseline] (31.285 ms) : 0, 31285
AppSec [candidate] (30.486 ms) : 0, 30486
Debugger [baseline] (65.858 ms) : 0, 65858
Debugger [candidate] (65.592 ms) : 0, 65592
Remote Config [baseline] (537.961 µs) : 0, 538
Remote Config [candidate] (541.423 µs) : 0, 541
Telemetry [baseline] (7.66 ms) : 0, 7660
Telemetry [candidate] (7.668 ms) : 0, 7668
Flare Poller [baseline] (3.526 ms) : 0, 3526
Flare Poller [candidate] (3.526 ms) : 0, 3526
section profiling
crashtracking [baseline] (1.455 ms) : 0, 1455
crashtracking [candidate] (1.442 ms) : 0, 1442
BytebuddyAgent [baseline] (733.663 ms) : 0, 733663
BytebuddyAgent [candidate] (731.855 ms) : 0, 731855
GlobalTracer [baseline] (221.552 ms) : 0, 221552
GlobalTracer [candidate] (222.912 ms) : 0, 222912
AppSec [baseline] (32.231 ms) : 0, 32231
AppSec [candidate] (32.361 ms) : 0, 32361
Debugger [baseline] (68.303 ms) : 0, 68303
Debugger [candidate] (68.009 ms) : 0, 68009
Remote Config [baseline] (638.795 µs) : 0, 639
Remote Config [candidate] (650.887 µs) : 0, 651
Telemetry [baseline] (7.891 ms) : 0, 7891
Telemetry [candidate] (8.065 ms) : 0, 8065
Flare Poller [baseline] (3.754 ms) : 0, 3754
Flare Poller [candidate] (3.84 ms) : 0, 3840
ProfilingAgent [baseline] (96.996 ms) : 0, 96996
ProfilingAgent [candidate] (96.875 ms) : 0, 96875
Profiling [baseline] (97.572 ms) : 0, 97572
Profiling [candidate] (97.456 ms) : 0, 97456
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.11 s) : 0, 1110119
Total [baseline] (8.887 s) : 0, 8886888
Agent [candidate] (1.113 s) : 0, 1112549
Total [candidate] (8.858 s) : 0, 8858221
section iast
Agent [baseline] (1.24 s) : 0, 1239911
Total [baseline] (9.555 s) : 0, 9555162
Agent [candidate] (1.25 s) : 0, 1250123
Total [candidate] (9.567 s) : 0, 9566668
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.11 s -
Agent iast 1.24 s 129.791 ms (11.7%)
Total tracing 8.887 s -
Total iast 9.555 s 668.274 ms (7.5%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.113 s -
Agent iast 1.25 s 137.574 ms (12.4%)
Total tracing 8.858 s -
Total iast 9.567 s 708.447 ms (8.0%)
gantt
    title insecure-bank - break down per module: candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.484 ms) : 0, 1484
crashtracking [candidate] (1.46 ms) : 0, 1460
BytebuddyAgent [baseline] (710.725 ms) : 0, 710725
BytebuddyAgent [candidate] (711.975 ms) : 0, 711975
GlobalTracer [baseline] (249.775 ms) : 0, 249775
GlobalTracer [candidate] (250.049 ms) : 0, 250049
AppSec [baseline] (32.568 ms) : 0, 32568
AppSec [candidate] (32.662 ms) : 0, 32662
Debugger [baseline] (68.327 ms) : 0, 68327
Debugger [candidate] (68.8 ms) : 0, 68800
Remote Config [baseline] (638.896 µs) : 0, 639
Remote Config [candidate] (631.604 µs) : 0, 632
Telemetry [baseline] (8.119 ms) : 0, 8119
Telemetry [candidate] (8.328 ms) : 0, 8328
Flare Poller [baseline] (3.664 ms) : 0, 3664
Flare Poller [candidate] (3.818 ms) : 0, 3818
section iast
crashtracking [baseline] (1.446 ms) : 0, 1446
crashtracking [candidate] (1.466 ms) : 0, 1466
BytebuddyAgent [baseline] (829.059 ms) : 0, 829059
BytebuddyAgent [candidate] (836.109 ms) : 0, 836109
GlobalTracer [baseline] (237.245 ms) : 0, 237245
GlobalTracer [candidate] (238.981 ms) : 0, 238981
IAST [baseline] (26.494 ms) : 0, 26494
IAST [candidate] (29.332 ms) : 0, 29332
AppSec [baseline] (34.742 ms) : 0, 34742
AppSec [candidate] (32.407 ms) : 0, 32407
Debugger [baseline] (64.696 ms) : 0, 64696
Debugger [candidate] (65.287 ms) : 0, 65287
Remote Config [baseline] (530.89 µs) : 0, 531
Remote Config [candidate] (536.855 µs) : 0, 537
Telemetry [baseline] (7.542 ms) : 0, 7542
Telemetry [candidate] (7.732 ms) : 0, 7732
Flare Poller [baseline] (3.518 ms) : 0, 3518
Flare Poller [candidate] (3.53 ms) : 0, 3530
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/update_config_invaersion_gradle
git_commit_date 1762968291 1762970269
git_commit_sha 46649f7 586c53e
release_version 1.56.0-SNAPSHOT~46649f7687 1.55.0-SNAPSHOT~586c53ec38
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1762973121 1762973121
ci_job_id 1230747200 1230747200
ci_pipeline_id 82135885 82135885
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-kmf85jlc 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-kmf85jlc 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 1 performance improvements and 2 performance regressions! Performance is the same for 17 metrics, 16 unstable metrics.

scenario Δ mean agg_http_req_duration_p50 Δ mean agg_http_req_duration_p95 Δ mean throughput candidate mean agg_http_req_duration_p50 candidate mean agg_http_req_duration_p95 candidate mean throughput baseline mean agg_http_req_duration_p50 baseline mean agg_http_req_duration_p95 baseline mean throughput
scenario:load:insecure-bank:iast:high_load worse
[+120.320µs; +236.697µs] or [+4.878%; +9.596%]
worse
[+210.869µs; +624.048µs] or [+2.919%; +8.640%]
unstable
[-226.371op/s; +49.559op/s] or [-15.630%; +3.422%]
2.645ms 7.640ms 1359.938op/s 2.467ms 7.223ms 1448.344op/s
scenario:load:petclinic:no_agent:high_load better
[-2.196ms; -0.522ms] or [-11.724%; -2.785%]
unstable
[-3.789ms; -0.176ms] or [-12.026%; -0.559%]
unstable
[-10.288op/s; +46.850op/s] or [-4.229%; +19.258%]
17.370ms 29.528ms 261.562op/s 18.729ms 31.511ms 243.281op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.185 ms) : 1173, 1196
.   : milestone, 1185,
iast (3.158 ms) : 3123, 3193
.   : milestone, 3158,
iast_FULL (5.685 ms) : 5629, 5741
.   : milestone, 5685,
iast_GLOBAL (3.633 ms) : 3570, 3696
.   : milestone, 3633,
profiling (1.986 ms) : 1969, 2003
.   : milestone, 1986,
tracing (1.808 ms) : 1792, 1823
.   : milestone, 1808,
section candidate
no_agent (1.174 ms) : 1163, 1186
.   : milestone, 1174,
iast (3.367 ms) : 3326, 3408
.   : milestone, 3367,
iast_FULL (5.619 ms) : 5562, 5676
.   : milestone, 5619,
iast_GLOBAL (3.684 ms) : 3575, 3794
.   : milestone, 3684,
profiling (2.045 ms) : 2027, 2063
.   : milestone, 2045,
tracing (1.826 ms) : 1812, 1840
.   : milestone, 1826,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.185 ms [1.173 ms, 1.196 ms] -
iast 3.158 ms [3.123 ms, 3.193 ms] 1.973 ms (166.5%)
iast_FULL 5.685 ms [5.629 ms, 5.741 ms] 4.5 ms (379.8%)
iast_GLOBAL 3.633 ms [3.57 ms, 3.696 ms] 2.448 ms (206.6%)
profiling 1.986 ms [1.969 ms, 2.003 ms] 800.807 µs (67.6%)
tracing 1.808 ms [1.792 ms, 1.823 ms] 622.899 µs (52.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.174 ms [1.163 ms, 1.186 ms] -
iast 3.367 ms [3.326 ms, 3.408 ms] 2.193 ms (186.8%)
iast_FULL 5.619 ms [5.562 ms, 5.676 ms] 4.445 ms (378.5%)
iast_GLOBAL 3.684 ms [3.575 ms, 3.794 ms] 2.51 ms (213.8%)
profiling 2.045 ms [2.027 ms, 2.063 ms] 870.569 µs (74.1%)
tracing 1.826 ms [1.812 ms, 1.84 ms] 651.832 µs (55.5%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687
    dateFormat X
    axisFormat %s
section baseline
no_agent (19.185 ms) : 18986, 19384
.   : milestone, 19185,
appsec (18.308 ms) : 18122, 18493
.   : milestone, 18308,
code_origins (17.978 ms) : 17799, 18156
.   : milestone, 17978,
iast (17.327 ms) : 17156, 17499
.   : milestone, 17327,
profiling (18.51 ms) : 18325, 18694
.   : milestone, 18510,
tracing (17.682 ms) : 17506, 17857
.   : milestone, 17682,
section candidate
no_agent (17.839 ms) : 17654, 18024
.   : milestone, 17839,
appsec (18.435 ms) : 18247, 18622
.   : milestone, 18435,
code_origins (17.608 ms) : 17434, 17782
.   : milestone, 17608,
iast (17.702 ms) : 17524, 17881
.   : milestone, 17702,
profiling (18.546 ms) : 18360, 18732
.   : milestone, 18546,
tracing (17.74 ms) : 17563, 17917
.   : milestone, 17740,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 19.185 ms [18.986 ms, 19.384 ms] -
appsec 18.308 ms [18.122 ms, 18.493 ms] -877.813 µs (-4.6%)
code_origins 17.978 ms [17.799 ms, 18.156 ms] -1.208 ms (-6.3%)
iast 17.327 ms [17.156 ms, 17.499 ms] -1.858 ms (-9.7%)
profiling 18.51 ms [18.325 ms, 18.694 ms] -675.388 µs (-3.5%)
tracing 17.682 ms [17.506 ms, 17.857 ms] -1.504 ms (-7.8%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 17.839 ms [17.654 ms, 18.024 ms] -
appsec 18.435 ms [18.247 ms, 18.622 ms] 595.416 µs (3.3%)
code_origins 17.608 ms [17.434 ms, 17.782 ms] -231.519 µs (-1.3%)
iast 17.702 ms [17.524 ms, 17.881 ms] -136.863 µs (-0.8%)
profiling 18.546 ms [18.36 ms, 18.732 ms] 706.713 µs (4.0%)
tracing 17.74 ms [17.563 ms, 17.917 ms] -99.552 µs (-0.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/update_config_invaersion_gradle
git_commit_date 1762968291 1762970269
git_commit_sha 46649f7 586c53e
release_version 1.56.0-SNAPSHOT~46649f7687 1.55.0-SNAPSHOT~586c53ec38
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1762972285 1762972285
ci_job_id 1230747202 1230747202
ci_pipeline_id 82135885 82135885
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-1-61b5otdp 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-1-61b5otdp 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 10 metrics, 2 unstable metrics.

Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687
    dateFormat X
    axisFormat %s
section baseline
no_agent (14.977 s) : 14977000, 14977000
.   : milestone, 14977000,
appsec (15.008 s) : 15008000, 15008000
.   : milestone, 15008000,
iast (18.8 s) : 18800000, 18800000
.   : milestone, 18800000,
iast_GLOBAL (17.708 s) : 17708000, 17708000
.   : milestone, 17708000,
profiling (15.829 s) : 15829000, 15829000
.   : milestone, 15829000,
tracing (14.55 s) : 14550000, 14550000
.   : milestone, 14550000,
section candidate
no_agent (15.49 s) : 15490000, 15490000
.   : milestone, 15490000,
appsec (14.854 s) : 14854000, 14854000
.   : milestone, 14854000,
iast (18.102 s) : 18102000, 18102000
.   : milestone, 18102000,
iast_GLOBAL (17.844 s) : 17844000, 17844000
.   : milestone, 17844000,
profiling (14.979 s) : 14979000, 14979000
.   : milestone, 14979000,
tracing (14.839 s) : 14839000, 14839000
.   : milestone, 14839000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.977 s [14.977 s, 14.977 s] -
appsec 15.008 s [15.008 s, 15.008 s] 31.0 ms (0.2%)
iast 18.8 s [18.8 s, 18.8 s] 3.823 s (25.5%)
iast_GLOBAL 17.708 s [17.708 s, 17.708 s] 2.731 s (18.2%)
profiling 15.829 s [15.829 s, 15.829 s] 852.0 ms (5.7%)
tracing 14.55 s [14.55 s, 14.55 s] -427.0 ms (-2.9%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.49 s [15.49 s, 15.49 s] -
appsec 14.854 s [14.854 s, 14.854 s] -636.0 ms (-4.1%)
iast 18.102 s [18.102 s, 18.102 s] 2.612 s (16.9%)
iast_GLOBAL 17.844 s [17.844 s, 17.844 s] 2.354 s (15.2%)
profiling 14.979 s [14.979 s, 14.979 s] -511.0 ms (-3.3%)
tracing 14.839 s [14.839 s, 14.839 s] -651.0 ms (-4.2%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.55.0-SNAPSHOT~586c53ec38, baseline=1.56.0-SNAPSHOT~46649f7687
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.472 ms) : 1461, 1484
.   : milestone, 1472,
appsec (3.689 ms) : 3471, 3907
.   : milestone, 3689,
iast (2.195 ms) : 2132, 2258
.   : milestone, 2195,
iast_GLOBAL (2.244 ms) : 2180, 2307
.   : milestone, 2244,
profiling (2.056 ms) : 2005, 2107
.   : milestone, 2056,
tracing (2.021 ms) : 1972, 2070
.   : milestone, 2021,
section candidate
no_agent (1.47 ms) : 1458, 1481
.   : milestone, 1470,
appsec (3.75 ms) : 3528, 3972
.   : milestone, 3750,
iast (2.202 ms) : 2139, 2266
.   : milestone, 2202,
iast_GLOBAL (2.238 ms) : 2175, 2302
.   : milestone, 2238,
profiling (2.512 ms) : 2338, 2686
.   : milestone, 2512,
tracing (2.022 ms) : 1973, 2071
.   : milestone, 2022,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.472 ms [1.461 ms, 1.484 ms] -
appsec 3.689 ms [3.471 ms, 3.907 ms] 2.217 ms (150.5%)
iast 2.195 ms [2.132 ms, 2.258 ms] 722.532 µs (49.1%)
iast_GLOBAL 2.244 ms [2.18 ms, 2.307 ms] 771.163 µs (52.4%)
profiling 2.056 ms [2.005 ms, 2.107 ms] 583.617 µs (39.6%)
tracing 2.021 ms [1.972 ms, 2.07 ms] 548.504 µs (37.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.47 ms [1.458 ms, 1.481 ms] -
appsec 3.75 ms [3.528 ms, 3.972 ms] 2.28 ms (155.2%)
iast 2.202 ms [2.139 ms, 2.266 ms] 732.859 µs (49.9%)
iast_GLOBAL 2.238 ms [2.175 ms, 2.302 ms] 768.866 µs (52.3%)
profiling 2.512 ms [2.338 ms, 2.686 ms] 1.043 ms (70.9%)
tracing 2.022 ms [1.973 ms, 2.071 ms] 552.766 µs (37.6%)

@mhlidd mhlidd changed the title Mhlidd/update config invaersion gradle Add Config Inversion Linter for Config Definitions Oct 23, 2025
@mhlidd mhlidd marked this pull request as ready for review October 23, 2025 21:58
@mhlidd mhlidd requested review from a team as code owners October 23, 2025 21:58
@mhlidd mhlidd requested review from bric3, mcculls and sarahchen6 and removed request for a team October 23, 2025 21:58
@github-actions
Copy link
Contributor

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

  • Add at least one type, and one component or instrumentation label to the pull request

If you need help, please check our contributing guidelines.

@mhlidd mhlidd added type: enhancement Enhancements and improvements tag: no release notes Changes to exclude from release notes comp: tooling Build & Tooling labels Oct 23, 2025
.replace(".", "_")

if (normalized !in supported && normalized !in aliasMapping) {
add("${file.name}:${i + 1} -> Config '$configValue' normalizes to '$normalized' which is not in supported-configurations.json")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be helpful to add another sentence explicitly recommending how to fix the error (and ~line 222). Perhaps something along the lines of "Please add the '$configValue' config to supported-configurations.json in or remove the config. More details in ."

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, instead of supported-configurations.json, prefer the extension.jsonPath.get()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be helpful to add another sentence explicitly recommending how to fix the error (and ~line 222). Perhaps something along the lines of "Please add the '$configValue' config to supported-configurations.json in or remove the config. More details in ."

I added a more clear message in the Exception message. I'd rather not make the error logs too noisy by adding this detail for each missing config.

Copy link
Contributor

@sarahchen6 sarahchen6 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool!

Copy link
Contributor

@bric3 bric3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good, few suggestions / polish though.

Walking the source code instead the java-parser lib can be used instead ? It's already in another of our plugin.

.replace(".", "_")

if (normalized !in supported && normalized !in aliasMapping) {
add("${file.name}:${i + 1} -> Config '$configValue' normalizes to '$normalized' which is not in supported-configurations.json")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, instead of supported-configurations.json, prefer the extension.jsonPath.get()

Copy link
Contributor

@bric3 bric3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, few nitpicks and suggestions. feel free to add apply them :)

val multiLineStartRegex = Regex("""public static final String (\w+) =$""")
// Multi-line value: `"value";`
val valueLineRegex = Regex(""""([^"]+)";""")
StaticJavaParser.setConfiguration(ParserConfiguration())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thought: I wonder if we should set explicitly the language level 🤔 to 1.8, when looking at the code of java parser, I see that the default is set to the POPULAR constant, however POPULAR appear to change regularly in minor versions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems to currently be set as Java 11, and was changed from Java 8 four years ago. But I agree that we can manually set it for consistency

Comment on lines 188 to 189
.filter { it is FieldDeclaration }
.map { it as FieldDeclaration }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: I believe it's possible to avoid the filter operation by returning null in the mapping lambda, note the as? in kotlin which casts to given type or return null.

Suggested change
.filter { it is FieldDeclaration }
.map { it as FieldDeclaration }
.map { it as? FieldDeclaration }

Comment on lines 190 to 209
.orElse(null)

if (field != null &&
field.hasModifiers(Modifier.Keyword.PUBLIC, Modifier.Keyword.STATIC, Modifier.Keyword.FINAL) &&
varDecl.typeAsString == "String") {

val fieldName = varDecl.nameAsString
if (fieldName.endsWith("_DEFAULT")) return@forEach
val init = varDecl.initializer.orElse(null) ?: return@forEach

if (init !is StringLiteralExpr) return@forEach
val rawValue = init.value

val normalized = normalize(rawValue)
if (normalized !in supported && normalized !in aliasMapping) {
val line = varDecl.range.map { it.begin.line }.orElse(1)
add("$fileName:$line -> Config '$rawValue' normalizes to '$normalized' " +
"which is missing from '${extension.jsonFile.get()}'")
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: The orElse can be replaced by ifPresent { v -> }.

Suggested change
.orElse(null)
if (field != null &&
field.hasModifiers(Modifier.Keyword.PUBLIC, Modifier.Keyword.STATIC, Modifier.Keyword.FINAL) &&
varDecl.typeAsString == "String") {
val fieldName = varDecl.nameAsString
if (fieldName.endsWith("_DEFAULT")) return@forEach
val init = varDecl.initializer.orElse(null) ?: return@forEach
if (init !is StringLiteralExpr) return@forEach
val rawValue = init.value
val normalized = normalize(rawValue)
if (normalized !in supported && normalized !in aliasMapping) {
val line = varDecl.range.map { it.begin.line }.orElse(1)
add("$fileName:$line -> Config '$rawValue' normalizes to '$normalized' " +
"which is missing from '${extension.jsonFile.get()}'")
}
}
.ifPresent { field ->
if (field.hasModifiers(Modifier.Keyword.PUBLIC, Modifier.Keyword.STATIC, Modifier.Keyword.FINAL) &&
varDecl.typeAsString == "String") {
val fieldName = varDecl.nameAsString
if (fieldName.endsWith("_DEFAULT")) return@forEach
val init = varDecl.initializer.orElse(null) ?: return@forEach
if (init !is StringLiteralExpr) return@forEach
val rawValue = init.value
val normalized = normalize(rawValue)
if (normalized !in supported && normalized !in aliasMapping) {
val line = varDecl.range.map { it.begin.line }.orElse(1)
add("$fileName:$line -> Config '$rawValue' normalizes to '$normalized' " +
"which is missing from '${extension.jsonFile.get()}'")
}
}

@mhlidd mhlidd merged commit ff3c612 into master Nov 12, 2025
540 checks passed
@mhlidd mhlidd deleted the mhlidd/update_config_invaersion_gradle branch November 12, 2025 20:46
@github-actions github-actions bot added this to the 1.56.0 milestone Nov 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: tooling Build & Tooling tag: no release notes Changes to exclude from release notes type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants